import { createRouter, createWebHistory } from 'vue-router'
import routes from './routes'
import dbUtils from '../libs/util.strotage.js'
import { useLoadingStore } from '../stores/loading'
import userInfoStore from '@/stores/userInfo.js'

const router = createRouter({
    history: createWebHistory(import.meta.env.VITE_APP_BASE_INDEX),
    scrollBehavior(to, from, savedPosition) {
        if (savedPosition) {
            return savedPosition
        } else {
            return { top: 0 }
        }
    },
    routes
})

router.beforeEach((to, from, next) => {
    // 检查是否需要登录
    if (to.meta.requiresAuth) {
        const isLoggedIn = dbUtils.get('token')
        // 检查用户是否已经登录
        if (isLoggedIn) {
            // 已经登录 访问登录页则直接跳到主页
            if (to.name === 'login') {
                return next('/')
            } else {
                userInfoStore().getAccountInfo().then(() => {
                    userInfoStore().getUserInfo().then(() => {
                        next()
                    })
                }).catch(err => {
                    return next({ name: 'login' })
                })
            }

        } else {
            // 未登录
            // 清空所有缓存数据
            dbUtils.clear()
            // 重定向到登录页
            return next({ name: 'login' })
        }

    } else {
        next()
    }
})

router.afterEach((to, from) => {
    const { loading, setLoading } = useLoadingStore()
    setTimeout(() => {
        setLoading(false)
    }, 1000)
})

router.onError((error) => {
    // 在这里处理路由错误
    console.error('路由错误:', error)
})

export default router
